using System;
using System.Web.UI.WebControls;

namespace Sedna.Core.Controller.Configurations
{
	public interface IDataGridColumnConfiguration : IConfiguration
	{
		string DataField
		{
			get;
		}

/*
		IDataTranslator ColumnDataTranslator
		{
			get;
		}

*/


        IDataGridInnerControlConfigurator ControlConfigurator
        {
            get;
        }
	    
		IDataGridCommandArgumentsGenerator CommandArgumentsGenerator
		{
			get;
		}

		string CommandName
		{
			get;
		}

		/// <summary>
		/// sets whether to include javascript this reference into a function call (e.g. myFunc(this, 'my=generated;params=value'))
		/// </summary>
		bool IncludeSource
		{
			get;
		}

		/// <summary>
		/// exports a button or a similar column inbound control
		/// </summary>
		IConfiguration ControlConfiguration
		{
			get;
		}

		string OnClick
		{
			get;
		}

		IDataGridColumnInboundControlIdGenerator ControlIdGenerator
		{
			get;
		}


		IConfiguration HeaderControlConfiguration
		{
			get;
		}

		bool Sortable
		{
			get;
		}

		string SortExpression
		{
			get;
		}

		bool DisplaySortMarker
		{
			get;
		}

		bool IsDefaultSort
		{
			get;
		}

		bool DefaultSortAsc
		{
			get;
		}

		IDataGridColumnStyle HeaderColumnStyle
		{
			get;
		}

		IDataGridColumnStyle ItemColumnStyle
		{
			get;
		}

		IDataGridColumnControlEnabler ColumnControlEnabler
		{
			get;
		}

		void ApplyStyles(DataGridColumn column);

/*
		Unit Width
		{
			get;
		}
*/

		bool IsVisibleForOperation(string operation);

        bool IsItemIndexColumn
        {
            get;
        }

        bool IsInvalidSighColumn
        {
            get;
        }

        IImageConfiguration ImageConfiguration
        {
            get;
        }
    }
}
